package com.wechat.file.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.wechat.file.enums.FileCategory;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName("file_info")
public class FileInfo {

    /**
     * 文件ID（主键）
     */
    @TableId(value = "file_id", type = IdType.ASSIGN_ID)
    private String fileId;

    /**
     * 上传者用户ID
     */
    @TableField("user_id")
    private Long userId;

    /**
     * 原始文件名
     */
    @TableField("filename")
    private String filename;

    /**
     * 文件大小（字节）
     */
    @TableField("file_size")
    private Long fileSize;

    /**
     * MIME类型
     */
    @TableField("content_type")
    private String contentType;

    /**
     * 文件MD5值
     */
    @TableField("file_md5")
    private String fileMd5;

    /**
     * MinIO存储桶名称
     */
    @TableField("bucket_name")
    private String bucketName;

    /**
     * MinIO对象名称
     */
    @TableField("object_name")
    private String objectName;

    /**
     * 文件访问URL
     */
    @TableField("file_url")
    private String fileUrl;

    /**
     * 文件分类
     */
    @TableField("file_category")
    private FileCategory fileCategory;

    /**
     * 上传时间
     */
    @TableField(value = "upload_time", fill = FieldFill.INSERT)
    private LocalDateTime uploadTime;

    /**
     * 更新时间
     */
    @TableField(value = "updated_at", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updatedAt;

    /**
     * 文件过期时间
     */
    @TableField("expire_time")
    private LocalDateTime expireTime;
}